package cc.xuzhi.muggle.devtools.model;

import cc.xuzhi.muggle.common.constant.Constants;
import cc.xuzhi.muggle.common.exception.ErrorCode;
import cc.xuzhi.muggle.common.exception.ServiceException;
import cc.xuzhi.muggle.devtools.constant.DevtoolsConfigConstants;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;

/**
 * 系统配置
 *
 * @author xuzhi
 * @date 2022-05-26 21:20:53
 */
@Data
public class DevtoolsConfig {

    /**
     * ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 配置名称
     */
    private String name;

    /**
     * code
     */
    private String code;

    /**
     * 全路径类名
     */
    private String clazz;

    /**
     * 活跃状态
     */
    private Integer active;

    /**
     * 配置主体
     */
    private Object config;

    /**
     * 状态
     */
    private Integer status;

    /**
     * 排序
     */
    private Long sort;

    /**
     * 备注
     */
    private String remark;

    /**
     * 删除状态
     */
    private Integer del;

    public static DevtoolsConfig init(String code) {
        DevtoolsConfig entity = new DevtoolsConfig();
        entity.setDel(Constants.FALSE);
        entity.setStatus(Constants.TRUE);
        entity.setActive(Constants.TRUE);
        entity.setCode(code);

        String clazz = DevtoolsConfigConstants.CONFIG_MAPPING.get(code);
        if(StringUtils.isEmpty(clazz)) {
            throw new ServiceException(ErrorCode.PLAT_ERROR, "配置文件CODE不合法");
        }
        entity.setClazz(clazz);
        entity.setName(DevtoolsConfigConstants.NAME_MAPPING.get(code));

        return entity;
    }


}
